home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / doc / tmac / fixindex.awk < prev    next >
Text File  |  1990-03-01  |  2KB  |  74 lines

  1. BEGIN {
  2.     FS = ":";
  3.     BD = "\\s+1\\f3";
  4.     ED = "\\fP\\s-1";
  5. }
  6.  
  7. NR == 1 {
  8.     if ($3 != "")
  9.         printf(".Ib \"%s\"\n", $2);
  10.     major = $2;
  11.     minor = $3;
  12.     if ($4 == "@DEF@") {
  13.         pagelist = BD $1 ED;
  14.     }
  15.     else {
  16.         pagelist = $1;
  17.     }
  18.     pageno = $1;
  19.     oldpageno = $1;
  20.     oldpagelist = "";
  21. }
  22.  
  23. NR != 1 {
  24.     if ($2 == major && $3 == minor)        # neither has changed
  25.     {
  26.         if ($1 != pageno) {        # new page number, append
  27.             oldpageno = $1;
  28.             oldpagelist = pagelist;
  29.             if ($4 == "@DEF@") {
  30.                 pagelist = pagelist ", " BD $1 ED;
  31.             }
  32.             else {
  33.                 pagelist = pagelist ", " $1;
  34.             }
  35.         }
  36.         else {                # old page, but check for def
  37.                            if ($4 == "@DEF@") {
  38.                             if (pageno == oldpageno) {
  39.                                 if (oldpagelist != "")
  40.                                         oldpagelist = oldpagelist ", "
  41.                 }
  42.                             pagelist = oldpagelist BD $1 ED;
  43.                         }
  44.                 }
  45.     }
  46.     else                    # one has changed
  47.     {
  48.         if (minor != "")        # dump full record
  49.             printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist);
  50.         else
  51.             printf(".I> \"%s\" \"%s\"\n", major, pagelist);
  52.         if ($4 == "@DEF@") {        # restart pagelist
  53.             pagelist = BD $1 ED;
  54.         }
  55.         else {
  56.             pagelist = $1;
  57.         }
  58.         oldpagelist = "";
  59.         oldpageno = $1;
  60.         if ($2 != major && $3 != "")    # major has changed, minor not null
  61.         printf(".Ib \"%s\"\n", $2);
  62.     }
  63.     major = $2;
  64.     minor = $3;
  65.     pageno = $1;
  66. }
  67.  
  68. END {
  69.     if (minor != "")            # dump full record
  70.         printf(".I< \"%s\" \"%s\" \"%s\"\n", major, minor, pagelist);
  71.     else
  72.         printf(".I> \"%s\" \"%s\"\n", major, pagelist);
  73. }
  74.